//package cn.itcast.user.web;
//
//import cn.itcast.user.pojo.User;
//import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.cloud.client.ServiceInstance;
//import org.springframework.cloud.client.discovery.DiscoveryClient;
//import org.springframework.web.bind.annotation.*;
//import org.springframework.web.client.RestTemplate;
//
//import java.util.List;
//
//@RestController
//@RequestMapping("/consumer")
//public class ConsumerController {
//
//    @Autowired
//    private RestTemplate restTemplate;
//
////    @Autowired
////    private DiscoveryClient discoveryClient;
//
//    @GetMapping("/{id}")
//    @HystrixCommand(fallbackMethod = "queryByIdFallBack")
//    public User queryById(@PathVariable("id") Long id) {
//
//        if (id == 1) {
//
//            throw new RuntimeException("服务太火爆了");
//
//        }
//
////        // 根据服务id(spring.application.name)，获取服务实例列表
////        // 这个会获取到注册到 Eureka 上的所有服务， Eureka 不负责处理
////        // 所以要使用到负载均衡的策略来选择提供服务的服务器 开启很多个user-service的集群
////        List<ServiceInstance> instances = discoveryClient.getInstances("user-service");
////
////        // 取出一个服务实例
////        ServiceInstance serviceInstance = instances.get(0);
////
////        // 从实例中获取host和port，组成URL
////        String host = serviceInstance.getHost();
////
////        int port = serviceInstance.getPort();
//
////        // 查询
////        User user = restTemplate.getForObject("http://" + host + ":" + port + "/user/" + id, User.class);
//
//        User user = restTemplate.getForObject("http://user-service/user/" + id, User.class);
//
//        return user;
//
//    }
//
//    public User queryByIdFallBack(Long id) {
//
//        User user = new User();
//
//        user.setId(id);
//
//        user.setName("当前服务太火爆，请稍后访问");
//
//        user.setNote("都说了太火爆，别访问了");
//
//        return user;
//
//    }
//
//}
